package com.xhwy.service;

import com.xhwy.entity.Product;
import com.xhwy.param.ProductParam;
import com.xhwy.param.ProductIdParam;
import com.xhwy.param.ProductQueryParam;
import com.xhwy.util.PageUtil;
import com.xhwy.util.R;

public interface ProductService {
    /**
     * 多条件查询商品列表
     * @param product
     * @param pageUtil
     * @return
     */
    PageUtil<Product> queryAllByLimit(Product product, PageUtil<Product> pageUtil);

    /**
     * 根据id删除商品
     * @param productId
     * @return
     */
    R deleteProductById(Integer productId);

    /**
     * 添加商品
     * @param product
     * @return
     */
    R addProduct(ProductParam product);

    /**
     * 获取推荐列表商品
     * @return
     */
    R getRecommendList();

    /**
     * 获取热销商品列表
     * @return
     */
    R getHotProductList();

    /**
     * 通用查询商品接口
     *  传入productTypeId，根据商品类型查询商品
     *  传入keyword关键字，根据关键字模糊查询商品
     * @param productQueryParam
     * @return
     */
    R getByProductType(ProductQueryParam productQueryParam);

    /**
     * 根据商品id，查询商品详情信息
     * @param productIdParam 已经校验过的商品id
     * @return
     */
    R detail(ProductIdParam productIdParam);

    /**
     * 开启/关闭 推荐
     * @param productIdParam 已经校验过的商品id
     * @return
     */
    R recommend(ProductIdParam productIdParam);

    /**
     * 上架/下架商品
     * @param productIdParam 已经校验过的商品id
     * @return
     */
    R changeSellState(ProductIdParam productIdParam);
}
